home *** CD-ROM | disk | FTP | other *** search
/ Penthouse Interactive Virtual Photo Shoot 4 / Penthouse Virtual Photo Shoot - Volume 4.iso / pc / setup / setup.mst < prev    next >
Text File  |  1995-03-11  |  14KB  |  397 lines

  1.  
  2. rem ---------------------------------------------------------------------
  3. rem
  4. rem SETUP.MST    - MSSETUP Installation Script
  5. rem
  6. rem                Version 1.0
  7. rem
  8. rem                (c) 1993 San Francisco Canyon Co. All Rights Reserved.
  9. rem
  10. rem ---------------------------------------------------------------------
  11.  
  12.  
  13. rem Required includes to interface with MSSETUP DLL's
  14. rem -------------------------------------------------
  15. '$INCLUDE 'setupapi.inc'
  16. '$INCLUDE 'msdetect.inc'
  17.  
  18.  
  19. rem Dialog box id's
  20. rem ---------------
  21. rem Note: If MSSETUP were really smart, we could use the
  22. rem #defines in DIALOGS.HR. Instead, we must manually
  23. rem keep them in step
  24. rem ----------------------------------------------------
  25.     CONST DESTPATH      = 300          ''Gets destination path
  26.     CONST EXITQUIT      = 600          ''Exits on user request
  27.     CONST EXITSUCCESS   = 700          ''Exits when install is done
  28.     CONST TOOBIG        = 6300         ''Not enough space on target disk error
  29.     CONST BADPATH       = 6400         ''Bad destination path error
  30.     CONST BADWINDOWS    = 6500         ''Wrong Windows release
  31.     CONST EXITFAILURE   = 6600         ''Exits on error
  32.  
  33.  
  34. rem String id's
  35. rem -----------
  36. rem Note: If MSSETUP were really smart, we could use the
  37. rem #defines in DIALOGS.HR. Instead, we must manually
  38. rem keep them in step
  39. rem ----------------------------------------------------
  40.     CONST STR_UTILITY   = 1024         ''Utility
  41.     CONST STR_GROUP     = 1025         ''Program Manager group
  42.     CONST STR_TITLE     = 1026         ''Installer Title
  43.     CONST STR_MSG1      = 1027         ''Version error message part 1
  44.     CONST STR_MSG2      = 1028         ''Version error message part 2
  45.     CONST STR_WARNING   = 1029         ''Warning
  46.     CONST STR_README    = 1030         ''Read Me
  47.  
  48.  
  49. rem Miscellaneous Constants
  50. rem -----------------------
  51.     CONST NOLOGO = 1                   ''Dummy NULL bitmap (must be 1)
  52.     CONST LOGO = 2                     ''Background bitmap
  53.     CONST MOVIE = 2                    ''Movie placeholder bitmap
  54.     CONST NOSPACE = 1                  ''No space to complete install
  55.     CONST INSTALLOK = 2                ''Install completed OK
  56.     CONST INSTALLFAILED =3             ''Install failed for some reason
  57.  
  58.  
  59. rem Global Variables
  60. rem ----------------
  61.     GLOBAL SOURCE$                     ''Source directory
  62.     GLOBAL DEST$                       ''Default destination directory
  63.     GLOBAL CUIDLL$                     ''User interface DLL
  64.     GLOBAL SETUPPATH$                  ''Setup destination path
  65.     GLOBAL HELPPROC$                   ''Help dialog procedure
  66.     GLOBAL EXTRACOSTS$                 ''List of extra costs to add per drive
  67.     GLOBAL APPNEEDS$                   ''Disk space costs per drive
  68.     GLOBAL SECTIONKEY$                 ''INF file section key
  69.     GLOBAL SUCCESS%                    ''Installation completion code
  70.     GLOBAL EXENAME$                    ''EXE name
  71.     GLOBAL SERIESID$                   ''Series ID
  72.     GLOBAL INIFILE$                    ''.INI filename
  73.     GLOBAL MYWINDIR$
  74.     GLOBAL MYSYSDIR$
  75.  
  76.  
  77. rem Initialize global vriables
  78. rem --------------------------
  79.     SETUPPATH$      = "C:\PHI"
  80.     SOURCE$         = GetSymbolValue("STF_SRCDIR")
  81.     DEST$           = SETUPPATH$
  82.     SUCCESS%        = INSTALLFAILED
  83.     EXTRACOSTS$     = "ExtraCosts"
  84.     APPNEEDS$       = "AppNeeds"
  85.     SECTIONKEY$     = "SectionKey"
  86.     MYSYSDIR$       = GetWindowsSysDir
  87.     MYWINDIR$       = GetWindowsDir
  88.  
  89.     FOR i% = 1 TO 26 STEP 1
  90.         AddListItem EXTRACOSTS$, "16384"
  91.     NEXT i%
  92.  
  93.  
  94. rem Get name of localized user interface dialogs
  95. rem --------------------------------------------
  96.     CUIDLL$ = "setup.DLL"
  97.  
  98.  
  99. rem Subroutines and Functions
  100. rem -------------------------
  101.     DECLARE FUNCTION Install AS INTEGER
  102.     DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  103.     DECLARE FUNCTION GetDLLVersion LIB "setup.dll" (szDLL$) AS INTEGER
  104.     DECLARE FUNCTION HideCriticalDirectory LIB "setup.dll" (szDir$) AS INTEGER
  105.     DECLARE FUNCTION GetResourceString LIB "setup.dll" (szResource$, idString%) AS INTEGER
  106.     DECLARE FUNCTION StartCustomSetup LIB "setup.dll" (hinst%, hwnd%) AS INTEGER
  107.     DECLARE FUNCTION StopCustomSetup LIB "setup.dll" (hinst%, hwnd%) AS INTEGER
  108.  
  109.  
  110. rem Initialize custom setup logic
  111. rem -----------------------------
  112.     SetBitmap CUIDLL$, NOLOGO
  113.     i% = GetResourceString (CUIDLL$, STR_TITLE)
  114.     SetTitle GetSymbolValue ("ResourceString")
  115.     i% = StartCustomSetup (HinstFrame(), HwndFrame ())
  116.     i% = SetBeepingMode(1)
  117.  
  118.  
  119. rem Make sure that we are running on Windows 3.1 or better
  120. rem ------------------------------------------------------
  121.     IF GetWindowsMajorVersion() < 3 THEN
  122.        sz$ = UIStartDlg(CUIDLL$, BADWINDOWS, "FInfo0DlgProc", 0, "")
  123.        UIPop 1
  124.        GOTO CLEANUP
  125.     END IF
  126.  
  127.     IF (GetWindowsMajorVersion() = 3) AND (GetWindowsMinorVersion() < 10) THEN
  128.        sz$ = UIStartDlg(CUIDLL$, BADWINDOWS, "FInfo0DlgProc", 0, "")
  129.        UIPop 1
  130.        GOTO CLEANUP
  131.     END IF
  132.  
  133.  
  134. rem Make sure that we are running on a 386 or better
  135. rem ------------------------------------------------
  136.     IF GetWinFlags() AND 2 THEN
  137.        sz$ = UIStartDlg(CUIDLL$, BADWINDOWS, "FInfo0DlgProc", 0, "")
  138.        UIPop 1
  139.        GOTO CLEANUP
  140.     END IF
  141.  
  142.  
  143. rem Find and read the .INF file.
  144. rem -------------------------------------------------------------------
  145.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  146.  
  147.     IF szInf$ = "" THEN
  148.        szTemp$ = GetSymbolValue("STF_SRCDIR")
  149.        szInf$ = szTemp$ + "CD.INF"
  150.     END IF
  151.  
  152.     ReadInfFile szInf$
  153.  
  154.  
  155. rem Which PHI series are we installing?
  156. rem -------------------------------------------------------------------
  157.     IF DoesFileExist(MakePath(GetSymbolValue("STF_SRCDIR"), "DEMO.ID"), femExists) = 1 THEN
  158.        EXENAME$ = "demo.exe"
  159.        SERIESID$ = "Demo"
  160.        INIFILE$ = "demo.ini"
  161.     ELSEIF DoesFileExist(MakePath(GetSymbolValue("STF_SRCDIR"), "1.ID"), femExists) = 1 THEN
  162.        EXENAME$ = "phi1.exe"
  163.        SERIESID$ = "#1"
  164.        INIFILE$ = "phi1.ini"
  165.     ELSEIF DoesFileExist(MakePath(GetSymbolValue("STF_SRCDIR"), "2.ID"), femExists) = 1 THEN
  166.        EXENAME$ = "phi2.exe"
  167.        SERIESID$ = "#2"
  168.        INIFILE$ = "phi2.ini"
  169.     ELSEIF DoesFileExist(MakePath(GetSymbolValue("STF_SRCDIR"), "3.ID"), femExists) = 1 THEN
  170.        EXENAME$ = "phi3.exe"
  171.        SERIESID$ = "#3"
  172.        INIFILE$ = "phi3.ini"
  173.     ELSEIF DoesFileExist(MakePath(GetSymbolValue("STF_SRCDIR"), "4.ID"), femExists) = 1 THEN
  174.        EXENAME$ = "phi4.exe"
  175.        SERIESID$ = "#4"
  176.        INIFILE$ = "phi4.ini"
  177.     END IF
  178.  
  179.  
  180. rem Get the destination path; if it's bad, we display an error
  181. rem ----------------------------------------------------------------
  182. GETPATH:
  183.     SetSymbolValue "EditTextIn", DEST$
  184.     SetSymbolValue "EditFocus", "END"
  185.  
  186. GETPATHL1:
  187.     sz$ = UIStartDlg(CUIDLL$, DESTPATH, "FEditDlgProc", 0, "")
  188.  
  189.     DEST$ = GetSymbolValue("EditTextOut")
  190.  
  191.     IF sz$ = "CONTINUE" THEN
  192.        IF IsDirWritable(DEST$) = 0 THEN
  193.           GOSUB BADPATH
  194.           GOTO GETPATHL1
  195.        END IF
  196.  
  197.        IF DoesFileExist(MakePath(DEST$, EXENAME$), femExists) = 1 THEN
  198.           i% = GetResourceString (CUIDLL$, STR_MSG1)
  199.           szError$ = DEST$ + GetSymbolValue ("ResourceString")
  200.           i% = GetDLLVersion(MakePath(DEST$, EXENAME$))
  201.           szVersion$ = GetSymbolValue ("VersionString")
  202.           szError$ = szError$ + szVersion$
  203.           i% = GetResourceString (CUIDLL$, STR_MSG2)
  204.           szError$ = szError$ + GetSymbolValue ("ResourceString")
  205.           i% = GetResourceString (CUIDLL$, STR_WARNING)
  206.           szCaption$ = GetSymbolValue ("ResourceString")
  207.           i% = DoMsgBox(szError$, szCaption$, 20)
  208.           UIPop 1
  209.           IF i% = 7 THEN
  210.              GOTO GETPATHL1
  211.           END IF
  212.        END IF
  213.  
  214.        UIPop 1
  215.  
  216.     ELSEIF sz$ = "REACTIVATE" THEN
  217.        GOTO GETPATHL1
  218.  
  219.     ELSE
  220.        GOSUB ASKQUIT
  221.        GOTO GETPATH
  222.  
  223.     END IF
  224.  
  225.  
  226. rem Perform actual installation
  227. rem ---------------------------
  228. INSTALL:
  229.     SUCCESS% = Install
  230.  
  231.     IF SUCCESS% = NOSPACE THEN
  232.        GOSUB TOOBIG
  233.        GOTO GETPATH
  234.     END IF
  235.  
  236.  
  237. rem When done, issue dialog
  238. rem -----------------------
  239. QUIT:
  240.     IF SUCCESS% = INSTALLOK THEN
  241.        sz$ = UIStartDlg(CUIDLL$, EXITSUCCESS, "FInfo0DlgProc", 0, "")
  242.     ELSE
  243.        sz$ = UIStartDlg(CUIDLL$, EXITFAILURE, "FInfo0DlgProc", 0, "")
  244.     END IF
  245.     UIPop 1
  246.  
  247.  
  248. rem Clean up all processing
  249. rem -----------------------
  250. CLEANUP:
  251.     i% = StopCustomSetup (HinstFrame(), HwndFrame ())
  252.  
  253.     END
  254.  
  255.  
  256. rem ASKQUIT: The user requested quit; does (s)he really want to?
  257. rem ------------------------------------------------------------
  258. ASKQUIT:
  259.     sz$ = UIStartDlg(CUIDLL$, EXITQUIT, "FInfoDlgProc", 0, "")
  260.     UIPop 1
  261.     IF sz$ = "CONTINUE" THEN
  262.        RETURN
  263.     END IF
  264.     GOTO CLEANUP
  265.  
  266.  
  267. rem BADPATH: The user entered an invalid destination directory
  268. rem ----------------------------------------------------------
  269. BADPATH:
  270.     sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
  271.     IF sz$ = "REACTIVATE" THEN
  272.        GOTO BADPATH
  273.     END IF
  274.     UIPop 1
  275.  
  276.     RETURN
  277.  
  278.  
  279. rem TOOBIG: The source files won't fit on the requested destination disk
  280. rem --------------------------------------------------------------------
  281. TOOBIG:
  282.     sz$ = UIStartDlg(CUIDLL$, TOOBIG, "FInfo0DlgProc", 0, "")
  283.     IF sz$ = "REACTIVATE" THEN
  284.        GOTO TOOBIG
  285.     END IF
  286.     UIPop 1
  287.  
  288.     RETURN
  289.  
  290.  
  291. rem Install: Perform actual installation
  292. rem ------------------------------------
  293. FUNCTION Install STATIC AS INTEGER
  294.  
  295.     rem Create the destination directory
  296.     rem --------------------------------
  297.         CreateDir DEST$, cmoNone
  298.  
  299.     rem Build the copy list
  300.     rem -------------------
  301.         AddSectionFilesToCopyList "Files", SOURCE$, DEST$
  302.         AddSectionFilesToCopyList "WINDIR", SOURCE$, MYWINDIR$
  303.         AddSectionFilesToCopyList "SYSDIR", SOURCE$, MYSYSDIR$
  304.         AddSectionFilesToCopyList "Pictures", SOURCE$, MakePath(DEST$, "pictures")
  305.         AddSectionFilesToCopyList "Sounds", SOURCE$, MakePath(DEST$, "sounds")
  306.  
  307.     rem Check that we have enough free space to perform the install
  308.     rem -----------------------------------------------------------
  309.         ListSym$ = APPNEEDS$
  310.         StillNeed& = GetCopyListCost(EXTRACOSTS$, ListSym$, "")
  311.  
  312.         drive$ = MID$(DEST$, 1, 1)
  313.         ndrive% = ASC(ucase$(drive$)) - ASC("A") + 1
  314.         cost& = VAL(GetListItem(APPNEEDS$, ndrive%))
  315.         free& = GetFreeSpaceForDrive(drive$)
  316.  
  317.         IF cost& >= free& THEN
  318.            Install = NOSPACE
  319.            EXIT FUNCTION
  320.         END IF
  321.  
  322.     rem Copy all the files from the source to the destination
  323.     rem -----------------------------------------------------
  324.         CopyFilesInCopyList
  325.  
  326.     rem Hide critical directories
  327.     rem -------------------------
  328.         i% = HideCriticalDirectory (MakePath(DEST$, "pictures"))
  329.         i% = HideCriticalDirectory (MakePath(DEST$, "sounds"))
  330.  
  331.     rem Update .INI File
  332.     rem ----------------
  333.         SPLITPATH SOURCE$, drv$, dir$, filename$, ext$
  334.         ini$ = MakePath(DEST$, INIFILE$)
  335.         RemoveIniKey ini$, "PHI", "Photographer", cmoNone
  336.         RemoveIniSection ini$, "Directories", cmoNone
  337.         CreateIniKeyValue ini$, "Directories", "Pictures", MakePath(DEST$, "pictures") + "\" , cmoNone
  338.         CreateIniKeyValue ini$, "Directories", "Sounds", MakePath(DEST$, "sounds") + "\" , cmoNone
  339.         CreateIniKeyValue ini$, "Directories", "Posters", drv$ + "\posters\" , cmoNone
  340.         CreateIniKeyValue ini$, "Directories", "Movies", drv$ + "\movies\" , cmoNone
  341.         CreateIniKeyValue ini$, "Directories", "Pet0", drv$ + "\movies\pet0\" , cmoNone
  342.         CreateIniKeyValue ini$, "Directories", "Pet1", drv$ + "\movies\pet1\" , cmoNone
  343.         CreateIniKeyValue ini$, "Directories", "Pet2", drv$ + "\movies\pet2\" , cmoNone
  344.  
  345.     rem Update WIN.INI and SYSTEM.INI
  346.     rem -----------------------------
  347.        CreateIniKeyValue "WIN.INI", "Extensions", "mov", MakePath(MYWINDIR$,"player.exe") + " ^.mov", cmoOverwrite
  348.        CreateIniKeyValue "WIN.INI", "Extensions", "pic", MakePath(MYWINDIR$,"viewer.exe") + " ^.pic", cmoOverwrite
  349.  
  350.        CreateIniKeyValue "WIN.INI", "MCI Extensions", "mov", "QTWVideo", cmoOverwrite
  351.        CreateIniKeyValue "WIN.INI", "MCI Extensions", "pic", "QTWVideo", cmoOverwrite
  352.        CreateIniKeyValue "WIN.INI", "MCI Extensions", "jpg", "QTWVideo", cmoOverwrite
  353.        ini$ = MakePath(MYWINDIR$, "QTW.INI")
  354.        CreateIniKeyValue ini$, "QuickTime for Windows", "Implementation", "Full", cmoOverwrite
  355.  
  356. rem    Apple specifies this but it doesn't work - natch
  357. rem    i% = WritePrivateProfileString("MCI", "QTWVideo", MakePath(MYSYSDIR$, "mciqtw.drv"), "SYSTEM.INI")
  358.  
  359.  
  360.     rem Create a Program Manager group
  361.     rem ------------------------------
  362.         i% = GetResourceString (CUIDLL$, STR_GROUP)
  363.         GROUP$ = GetSymbolValue ("ResourceString")
  364.         CreateProgmanGroup GROUP$, "", cmoNone
  365.         i% = GetResourceString (CUIDLL$, STR_UTILITY)
  366.         CreateProgmanItem GROUP$, GetSymbolValue ("ResourceString") + " " + SERIESID$, MakePath(DEST$,EXENAME$), "", cmoOverwrite
  367.         i% = GetResourceString (CUIDLL$, STR_README)
  368.         CreateProgmanItem GROUP$, GetSymbolValue ("ResourceString"), "write " + MakePath(DEST$,"readme.wri"), "", cmoOverwrite
  369.  
  370.     rem Indicate install completed OK
  371.     rem -----------------------------
  372.         Install = INSTALLOK
  373.  
  374. END FUNCTION
  375.  
  376.  
  377. rem MakePath: Builds path from directory and file
  378. rem ---------------------------------------------
  379. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  380.  
  381.     IF szDir$ = "" THEN
  382.        MakePath = szFile$
  383.  
  384.     ELSEIF szFile$ = "" THEN
  385.        MakePath = szDir$
  386.  
  387.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  388.        MakePath = szDir$ + szFile$
  389.  
  390.     ELSE
  391.        MakePath = szDir$ + "\" + szFile$
  392.  
  393.     END IF
  394.  
  395. END FUNCTION
  396.  
  397.